package xyz.perkd.form;
import javax.swing.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;

class FileDropHandler extends TransferHandler {

    private JTextField filePath;

    public FileDropHandler (JTextField tmpFilePath) {
        filePath = tmpFilePath;
    }

    @Override
    public boolean canImport(TransferSupport info) {
        // 只接受文件拖拽
        if (!info.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            return false;
        }
        return true;
    }

    @Override
    protected Transferable createTransferable(JComponent c) {
        return null; // 我们不从组件中导出数据，只导入
    }

    @Override
    public boolean importData(TransferSupport info) {
        if (!canImport(info)) {
            return false;
        }
        Transferable t = info.getTransferable();
        try {
            java.util.List<File> fileList = (java.util.List<File>) t.getTransferData(DataFlavor.javaFileListFlavor);
            for (File file : fileList) {
                System.out.println("文件路径: " + file.getAbsolutePath()); // 输出文件路径到控制台
                // 这里可以添加更多处理文件的代码，例如读取文件等。
                filePath.setText(file.getAbsolutePath());
            }
            return true; // 表示成功处理了拖拽数据
        } catch (UnsupportedFlavorException | IOException e) {
            e.printStackTrace(); // 处理异常情况，例如不支持的文件类型或I/O错误。
            return false; // 表示处理失败。
        }
    }
}